//package com.xunlai.infra.permission.manager.web.service.impl;
//
//import com.xunlai.infra.message.configuration.repository.SmsChannelConfigRepository;
//import com.xunlai.infra.message.configuration.repository.SmsChannelRepository;
//import com.xunlai.infra.message.configuration.repository.entity.SmsChannel;
//import com.xunlai.infra.message.configuration.repository.entity.SmsChannelConfig;
//import com.xunlai.infra.permission.common.exception.DataNotExistException;
//import com.xunlai.infra.permission.common.exception.PermissionBusinessException;
//import com.xunlai.infra.permission.manager.web.converter.SmsChannelConfigConverter;
//import com.xunlai.infra.permission.manager.web.service.SmsConfigService;
//import com.xunlai.infra.permission.manager.web.vo.BasePageRespVo;
//import com.xunlai.infra.permission.manager.web.vo.sms.*;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.domain.*;
//import org.springframework.stereotype.Service;
//
//import java.util.List;
//import java.util.Optional;
//import java.util.stream.StreamSupport;
//
///**
// * @author liang
// * @date 12/22/22 4:59 PM
// */
//@Service
//public class SmsConfigServiceImpl implements SmsConfigService {
//
//    private SmsChannelConfigRepository smsChannelConfigRepository;
//
//    private SmsChannelRepository smsChannelRepository;
//
//
//    @Override
//    public Long createSmsConfig(CreateSmsConfigReqVo createSmsConfigReqVo) throws PermissionBusinessException {
//        SmsChannelConfig smsChannelConfig = SmsChannelConfigConverter.INSTANCE.convertCreateReq2Entity(createSmsConfigReqVo);
//        if(smsChannelConfig.getEnable() == null){
//            smsChannelConfig.setEnable(Boolean.TRUE);
//        }
//        Long channelId = smsChannelConfig.getChannelId();
//        Optional<SmsChannel> channelOptional = smsChannelRepository.findById(channelId);
//        if(channelOptional.isEmpty()){
//            throw new DataNotExistException("所选渠道不存在");
//        }
//        SmsChannel smsChannel = channelOptional.get();
//        smsChannelConfig.setChannelCode(smsChannel.getChannelCode());
//        smsChannelConfig.setChannelName(smsChannel.getChannelName());
//        SmsChannelConfig save = smsChannelConfigRepository.save(smsChannelConfig);
//        return save.getId();
//    }
//
//    @Override
//    public void updateSmsConfig(UpdateSmsConfigReqVo updateSmsConfigReqVo) throws PermissionBusinessException {
//        Long id = updateSmsConfigReqVo.getId();
//        SmsChannelConfig updateSmsChannelConfig = SmsChannelConfigConverter.INSTANCE.convertUpdateReq2Entity(updateSmsConfigReqVo);
//        Optional<SmsChannelConfig> channelConfigOptional = smsChannelConfigRepository.findById(id);
//        if(channelConfigOptional.isEmpty()){
//            throw new DataNotExistException("需要修改的配置不存在");
//        }
//        Long channelId = updateSmsConfigReqVo.getChannelId();
//        Optional<SmsChannel> channelOptional = smsChannelRepository.findById(channelId);
//        if(channelOptional.isEmpty()){
//            throw new DataNotExistException("所选渠道不存在");
//        }
//        SmsChannel smsChannel = channelOptional.get();
//        updateSmsChannelConfig.setChannelCode(smsChannel.getChannelCode());
//        updateSmsChannelConfig.setChannelName(smsChannel.getChannelName());
//        smsChannelConfigRepository.save(updateSmsChannelConfig);
//    }
//
//    @Override
//    public List<SmsChannelListVo> listSmsChannel() {
//        SmsChannel smsChannel = new SmsChannel();
//        smsChannel.setEnable(Boolean.TRUE);
//        Iterable<SmsChannel> smsChannelIterable = smsChannelRepository.findAll(Example.of(smsChannel));
//        return StreamSupport.stream(smsChannelIterable.spliterator(),false)
//                .map(SmsChannelConfigConverter.INSTANCE::convertChannelEntity2ListVo)
//                .toList();
//    }
//
//    @Override
//    public BasePageRespVo<SmsChannelConfigListVo> pageListSmsChannelConfig(SearchSmsConfigReqVo searchSmsConfigReqVo, Integer pageNum, Integer pageSize) {
//        SmsChannelConfig smsChannelConfig = SmsChannelConfigConverter.INSTANCE.convertSearchReq2Entity(searchSmsConfigReqVo);
//        pageNum = (pageNum == null || pageNum < 1) ? 1 : pageNum;
//        int size = (pageSize == null || pageSize <= 0) ? 10 : pageSize;
//        Page<SmsChannelConfig> channelConfigPage = smsChannelConfigRepository.findAll(
//                Example.of(smsChannelConfig
//                        , ExampleMatcher.matching()
//                                .withMatcher("signature",g -> g.caseSensitive().contains())
//                )
//                , PageRequest.of(pageNum - 1, size));
//
//        List<SmsChannelConfig> content = channelConfigPage.getContent();
//        List<SmsChannelConfigListVo> configListVoList = content.stream().map(SmsChannelConfigConverter.INSTANCE::convertConfigEntity2ListVo).toList();
//        return new BasePageRespVo<>(configListVoList,pageNum,size,channelConfigPage.getTotalElements(),channelConfigPage.getTotalPages());
//    }
//
//    @Override
//    public boolean deleteSmsChannelConfig(Long id) {
//        smsChannelConfigRepository.deleteById(id);
//        return true;
//    }
//
//    @Autowired
//    public void setSmsChannelConfigRepository(SmsChannelConfigRepository smsChannelConfigRepository) {
//        this.smsChannelConfigRepository = smsChannelConfigRepository;
//    }
//
//    @Autowired
//    public void setSmsChannelRepository(SmsChannelRepository smsChannelRepository) {
//        this.smsChannelRepository = smsChannelRepository;
//    }
//}
